package code08_常用类.String;

/**
 * @author 黄衡熙
 * @version 1.0
 */
public class Test01_定义方式 {
    public static void main(String[] args) {
        // 定义方式一:直接创建,直接使用一对双引号表示即可
        // 该方式的数据不符合引用数据类型的存储方式
        // 由于String过于常用了,JVM对其做了优化
        // 该方式的数据不是存储在堆中的,而是存储在常量池中
        String s1 = "admin";
        String s2 = "admin";
        // 由于常量池中同一个值不会开辟新的空间,因此s1与s2是同一个空间,其返回值为true
        System.out.println(s1 == s2);

        // 定义方式二:通过构造函数创建对象
        String s3 = new String("admin");
        String s4 = new String("admin");
        // 通过构造方法在堆中创建对象时,不管其值是否想等,都会开辟新的空间
        // 因此,s3与s4的存储地址不一致,其返回值为false
        System.out.println(s3 == s4);

        // 创建一个空字符串
        String s5 = new String();
        System.out.println(s5);

        String s6 = new String(new char[]{'a','d','m','i','n'});
        System.out.println(s6);
    }
}
